/*==============================================================*/
/* DBMS name:      Microsoft SQL Server 2005                    */
/* Created on:     17/07/2010 18:32:19                          */
/*==============================================================*/


if exists (select 1
   from sys.sysreferences r join sys.sysobjects o on (o.id = r.constid and o.type = 'F')
   where r.fkeyid = object_id('BODEGA') and o.name = 'FK_BODEGA_TIENE_TIPO_BOD')
alter table BODEGA
   drop constraint FK_BODEGA_TIENE_TIPO_BOD
go

if exists (select 1
   from sys.sysreferences r join sys.sysobjects o on (o.id = r.constid and o.type = 'F')
   where r.fkeyid = object_id('MATERIAL_REAL') and o.name = 'FK_MATERIAL_ASIGNADO__PROYECTO')
alter table MATERIAL_REAL
   drop constraint FK_MATERIAL_ASIGNADO__PROYECTO
go

if exists (select 1
   from sys.sysreferences r join sys.sysobjects o on (o.id = r.constid and o.type = 'F')
   where r.fkeyid = object_id('MATERIAL_REAL') and o.name = 'FK_MATERIAL_CONTIENE_BODEGA')
alter table MATERIAL_REAL
   drop constraint FK_MATERIAL_CONTIENE_BODEGA
go

if exists (select 1
   from sys.sysreferences r join sys.sysobjects o on (o.id = r.constid and o.type = 'F')
   where r.fkeyid = object_id('MATERIAL_REAL') and o.name = 'FK_MATERIAL_EXISTE_TIPO_MAT')
alter table MATERIAL_REAL
   drop constraint FK_MATERIAL_EXISTE_TIPO_MAT
go

if exists (select 1
   from sys.sysreferences r join sys.sysobjects o on (o.id = r.constid and o.type = 'F')
   where r.fkeyid = object_id('PROYECTO') and o.name = 'FK_PROYECTO_CREA_UN_USUARIO')
alter table PROYECTO
   drop constraint FK_PROYECTO_CREA_UN_USUARIO
go

if exists (select 1
   from sys.sysreferences r join sys.sysobjects o on (o.id = r.constid and o.type = 'F')
   where r.fkeyid = object_id('PROYECTO') and o.name = 'FK_PROYECTO_PERTENECE_TIPO_PRO')
alter table PROYECTO
   drop constraint FK_PROYECTO_PERTENECE_TIPO_PRO
go

if exists (select 1
   from sys.sysreferences r join sys.sysobjects o on (o.id = r.constid and o.type = 'F')
   where r.fkeyid = object_id('PROYECTO') and o.name = 'FK_PROYECTO_RELATIONS_ESTADO_P')
alter table PROYECTO
   drop constraint FK_PROYECTO_RELATIONS_ESTADO_P
go

if exists (select 1
   from sys.sysreferences r join sys.sysobjects o on (o.id = r.constid and o.type = 'F')
   where r.fkeyid = object_id('ROL_ACCION') and o.name = 'FK_ROL_ACCI_AUTORIZAD_ACCION')
alter table ROL_ACCION
   drop constraint FK_ROL_ACCI_AUTORIZAD_ACCION
go

if exists (select 1
   from sys.sysreferences r join sys.sysobjects o on (o.id = r.constid and o.type = 'F')
   where r.fkeyid = object_id('ROL_ACCION') and o.name = 'FK_ROL_ACCI_TIENE_AUT_ROL')
alter table ROL_ACCION
   drop constraint FK_ROL_ACCI_TIENE_AUT_ROL
go

if exists (select 1
   from sys.sysreferences r join sys.sysobjects o on (o.id = r.constid and o.type = 'F')
   where r.fkeyid = object_id('TIPO_MATERIAL') and o.name = 'FK_TIPO_MAT_PERTENECE_GRUPO_MA')
alter table TIPO_MATERIAL
   drop constraint FK_TIPO_MAT_PERTENECE_GRUPO_MA
go

if exists (select 1
   from sys.sysreferences r join sys.sysobjects o on (o.id = r.constid and o.type = 'F')
   where r.fkeyid = object_id('TIPO_MATERIAL') and o.name = 'FK_TIPO_MAT_TIENE_UNA_UNIDAD_D')
alter table TIPO_MATERIAL
   drop constraint FK_TIPO_MAT_TIENE_UNA_UNIDAD_D
go

if exists (select 1
   from sys.sysreferences r join sys.sysobjects o on (o.id = r.constid and o.type = 'F')
   where r.fkeyid = object_id('USUARIO') and o.name = 'FK_USUARIO_POSEE_UN_ESTADO_U')
alter table USUARIO
   drop constraint FK_USUARIO_POSEE_UN_ESTADO_U
go

if exists (select 1
   from sys.sysreferences r join sys.sysobjects o on (o.id = r.constid and o.type = 'F')
   where r.fkeyid = object_id('USUARIO') and o.name = 'FK_USUARIO_TIENE_UN_ROL')
alter table USUARIO
   drop constraint FK_USUARIO_TIENE_UN_ROL
go

if exists (select 1
            from  sysobjects
           where  id = object_id('ACCION')
            and   type = 'U')
   drop table ACCION
go

if exists (select 1
            from  sysindexes
           where  id    = object_id('BODEGA')
            and   name  = 'TIENE_FK'
            and   indid > 0
            and   indid < 255)
   drop index BODEGA.TIENE_FK
go

if exists (select 1
            from  sysobjects
           where  id = object_id('BODEGA')
            and   type = 'U')
   drop table BODEGA
go

if exists (select 1
            from  sysobjects
           where  id = object_id('ESTADO_PROYECTO')
            and   type = 'U')
   drop table ESTADO_PROYECTO
go

if exists (select 1
            from  sysobjects
           where  id = object_id('ESTADO_USUARIO')
            and   type = 'U')
   drop table ESTADO_USUARIO
go

if exists (select 1
            from  sysobjects
           where  id = object_id('GRUPO_MATERIAL')
            and   type = 'U')
   drop table GRUPO_MATERIAL
go

if exists (select 1
            from  sysindexes
           where  id    = object_id('MATERIAL_REAL')
            and   name  = 'ASIGNADO_A_FK'
            and   indid > 0
            and   indid < 255)
   drop index MATERIAL_REAL.ASIGNADO_A_FK
go

if exists (select 1
            from  sysindexes
           where  id    = object_id('MATERIAL_REAL')
            and   name  = 'CONTIENE_FK'
            and   indid > 0
            and   indid < 255)
   drop index MATERIAL_REAL.CONTIENE_FK
go

if exists (select 1
            from  sysindexes
           where  id    = object_id('MATERIAL_REAL')
            and   name  = 'EXISTE_FK'
            and   indid > 0
            and   indid < 255)
   drop index MATERIAL_REAL.EXISTE_FK
go

if exists (select 1
            from  sysobjects
           where  id = object_id('MATERIAL_REAL')
            and   type = 'U')
   drop table MATERIAL_REAL
go

if exists (select 1
            from  sysindexes
           where  id    = object_id('PROYECTO')
            and   name  = 'RELATIONSHIP_16_FK'
            and   indid > 0
            and   indid < 255)
   drop index PROYECTO.RELATIONSHIP_16_FK
go

if exists (select 1
            from  sysindexes
           where  id    = object_id('PROYECTO')
            and   name  = 'CREA_UN_FK'
            and   indid > 0
            and   indid < 255)
   drop index PROYECTO.CREA_UN_FK
go

if exists (select 1
            from  sysindexes
           where  id    = object_id('PROYECTO')
            and   name  = 'PERTENECE_A_UN_FK'
            and   indid > 0
            and   indid < 255)
   drop index PROYECTO.PERTENECE_A_UN_FK
go

if exists (select 1
            from  sysobjects
           where  id = object_id('PROYECTO')
            and   type = 'U')
   drop table PROYECTO
go

if exists (select 1
            from  sysobjects
           where  id = object_id('ROL')
            and   type = 'U')
   drop table ROL
go

if exists (select 1
            from  sysindexes
           where  id    = object_id('ROL_ACCION')
            and   name  = 'AUTORIZADA_PARA_FK'
            and   indid > 0
            and   indid < 255)
   drop index ROL_ACCION.AUTORIZADA_PARA_FK
go

if exists (select 1
            from  sysindexes
           where  id    = object_id('ROL_ACCION')
            and   name  = 'TIENE_AUTORIZACION_PARA_FK'
            and   indid > 0
            and   indid < 255)
   drop index ROL_ACCION.TIENE_AUTORIZACION_PARA_FK
go

if exists (select 1
            from  sysobjects
           where  id = object_id('ROL_ACCION')
            and   type = 'U')
   drop table ROL_ACCION
go

if exists (select 1
            from  sysobjects
           where  id = object_id('TIPO_BODEGA')
            and   type = 'U')
   drop table TIPO_BODEGA
go

if exists (select 1
            from  sysindexes
           where  id    = object_id('TIPO_MATERIAL')
            and   name  = 'TIENE_UNA_FK'
            and   indid > 0
            and   indid < 255)
   drop index TIPO_MATERIAL.TIENE_UNA_FK
go

if exists (select 1
            from  sysindexes
           where  id    = object_id('TIPO_MATERIAL')
            and   name  = 'PERTENECE_A_FK'
            and   indid > 0
            and   indid < 255)
   drop index TIPO_MATERIAL.PERTENECE_A_FK
go

if exists (select 1
            from  sysobjects
           where  id = object_id('TIPO_MATERIAL')
            and   type = 'U')
   drop table TIPO_MATERIAL
go

if exists (select 1
            from  sysobjects
           where  id = object_id('TIPO_PROYECTO')
            and   type = 'U')
   drop table TIPO_PROYECTO
go

if exists (select 1
            from  sysobjects
           where  id = object_id('UNIDAD_DE_MEDIDA')
            and   type = 'U')
   drop table UNIDAD_DE_MEDIDA
go

if exists (select 1
            from  sysindexes
           where  id    = object_id('USUARIO')
            and   name  = 'POSEE_UN_FK'
            and   indid > 0
            and   indid < 255)
   drop index USUARIO.POSEE_UN_FK
go

if exists (select 1
            from  sysindexes
           where  id    = object_id('USUARIO')
            and   name  = 'TIENE_UN_FK'
            and   indid > 0
            and   indid < 255)
   drop index USUARIO.TIENE_UN_FK
go

if exists (select 1
            from  sysobjects
           where  id = object_id('USUARIO')
            and   type = 'U')
   drop table USUARIO
go

/*==============================================================*/
/* Table: ACCION                                                */
/*==============================================================*/
create table ACCION (
   IDACCION             numeric              identity,
   NOMBREACCION         varchar(50)          not null,
   constraint PK_ACCION primary key nonclustered (IDACCION)
)
go

/*==============================================================*/
/* Table: BODEGA                                                */
/*==============================================================*/
create table BODEGA (
   IDBODEGA             numeric              identity,
   IDTIPOBODEGA         numeric              not null,
   NOMBREBODEGA         varchar(30)          not null,
   constraint PK_BODEGA primary key nonclustered (IDBODEGA)
)
go

/*==============================================================*/
/* Index: TIENE_FK                                              */
/*==============================================================*/
create index TIENE_FK on BODEGA (
IDTIPOBODEGA ASC
)
go

/*==============================================================*/
/* Table: ESTADO_PROYECTO                                       */
/*==============================================================*/
create table ESTADO_PROYECTO (
   IDESTADOPROYECTO     numeric              identity,
   NOMBREESTADOPROYECTO varchar(40)          not null,
   DESCRIPCIONESTADOPROYECTO varchar(300)         not null,
   constraint PK_ESTADO_PROYECTO primary key nonclustered (IDESTADOPROYECTO)
)
go

/*==============================================================*/
/* Table: ESTADO_USUARIO                                        */
/*==============================================================*/
create table ESTADO_USUARIO (
   IDESTADOUSUARIO      numeric              identity,
   NOMBREESTADOUSUARIO  varchar(100)         not null,
   DESCRIPCIONESTADOUSUARIO varchar(100)         not null,
   constraint PK_ESTADO_USUARIO primary key nonclustered (IDESTADOUSUARIO)
)
go

/*==============================================================*/
/* Table: GRUPO_MATERIAL                                        */
/*==============================================================*/
create table GRUPO_MATERIAL (
   IDGRUPOMATERIAL      numeric              identity,
   NOMBREGRUPOMATERIAL  varchar(40)          not null,
   constraint PK_GRUPO_MATERIAL primary key nonclustered (IDGRUPOMATERIAL)
)
go

/*==============================================================*/
/* Table: MATERIAL_REAL                                         */
/*==============================================================*/
create table MATERIAL_REAL (
   IDTIPOMATERIAL       numeric              not null,
   IDBODEGA             numeric              not null,
   IDPROYECTO           numeric              not null,
   CANTIDADREAL         float                not null,
   CANTIDADREMANENTE    float                not null,
   constraint PK_MATERIAL_REAL primary key (IDTIPOMATERIAL, IDBODEGA, IDPROYECTO)
)
go

/*==============================================================*/
/* Index: EXISTE_FK                                             */
/*==============================================================*/
create index EXISTE_FK on MATERIAL_REAL (
IDTIPOMATERIAL ASC
)
go

/*==============================================================*/
/* Index: CONTIENE_FK                                           */
/*==============================================================*/
create index CONTIENE_FK on MATERIAL_REAL (
IDBODEGA ASC
)
go

/*==============================================================*/
/* Index: ASIGNADO_A_FK                                         */
/*==============================================================*/
create index ASIGNADO_A_FK on MATERIAL_REAL (
IDPROYECTO ASC
)
go

/*==============================================================*/
/* Table: PROYECTO                                              */
/*==============================================================*/
create table PROYECTO (
   IDPROYECTO           numeric              identity,
   IDTIPOPROYECTO       numeric              not null,
   IDESTADOPROYECTO     numeric              not null,
   IDUSUARIO            numeric              null,
   NOMBREPROYECTO       varchar(100)         not null,
   FECHACREACIONPROYECTO datetime             not null,
   DESCRIPCIONPROYECTO  text                 not null,
   constraint PK_PROYECTO primary key nonclustered (IDPROYECTO)
)
go

/*==============================================================*/
/* Index: PERTENECE_A_UN_FK                                     */
/*==============================================================*/
create index PERTENECE_A_UN_FK on PROYECTO (
IDTIPOPROYECTO ASC
)
go

/*==============================================================*/
/* Index: CREA_UN_FK                                            */
/*==============================================================*/
create index CREA_UN_FK on PROYECTO (
IDUSUARIO ASC
)
go

/*==============================================================*/
/* Index: RELATIONSHIP_16_FK                                    */
/*==============================================================*/
create index RELATIONSHIP_16_FK on PROYECTO (
IDESTADOPROYECTO ASC
)
go

/*==============================================================*/
/* Table: ROL                                                   */
/*==============================================================*/
create table ROL (
   IDROL                numeric              identity,
   NOMBREROL            varchar(50)          not null,
   constraint PK_ROL primary key nonclustered (IDROL)
)
go

/*==============================================================*/
/* Table: ROL_ACCION                                            */
/*==============================================================*/
create table ROL_ACCION (
   IDROL                numeric              not null,
   IDACCION             numeric              not null,
   constraint PK_ROL_ACCION primary key (IDROL, IDACCION)
)
go

/*==============================================================*/
/* Index: TIENE_AUTORIZACION_PARA_FK                            */
/*==============================================================*/
create index TIENE_AUTORIZACION_PARA_FK on ROL_ACCION (
IDROL ASC
)
go

/*==============================================================*/
/* Index: AUTORIZADA_PARA_FK                                    */
/*==============================================================*/
create index AUTORIZADA_PARA_FK on ROL_ACCION (
IDACCION ASC
)
go

/*==============================================================*/
/* Table: TIPO_BODEGA                                           */
/*==============================================================*/
create table TIPO_BODEGA (
   IDTIPOBODEGA         numeric              identity,
   NOMBRETIPOBODEGA     varchar(30)          not null,
   constraint PK_TIPO_BODEGA primary key nonclustered (IDTIPOBODEGA)
)
go

/*==============================================================*/
/* Table: TIPO_MATERIAL                                         */
/*==============================================================*/
create table TIPO_MATERIAL (
   IDTIPOMATERIAL       numeric              identity,
   IDGRUPOMATERIAL      numeric              not null,
   IDUNIDADDEMEDIDA     numeric              not null,
   NOMBRETIPOMATERIAL   varchar(40)          not null,
   SKUTIPOMATERIAL      varchar(20)          not null,
   constraint PK_TIPO_MATERIAL primary key nonclustered (IDTIPOMATERIAL)
)
go

/*==============================================================*/
/* Index: PERTENECE_A_FK                                        */
/*==============================================================*/
create index PERTENECE_A_FK on TIPO_MATERIAL (
IDGRUPOMATERIAL ASC
)
go

/*==============================================================*/
/* Index: TIENE_UNA_FK                                          */
/*==============================================================*/
create index TIENE_UNA_FK on TIPO_MATERIAL (
IDUNIDADDEMEDIDA ASC
)
go

/*==============================================================*/
/* Table: TIPO_PROYECTO                                         */
/*==============================================================*/
create table TIPO_PROYECTO (
   IDTIPOPROYECTO       numeric              identity,
   NOMBRETIPOPROYECTO   varchar(40)          not null,
   constraint PK_TIPO_PROYECTO primary key nonclustered (IDTIPOPROYECTO)
)
go

/*==============================================================*/
/* Table: UNIDAD_DE_MEDIDA                                      */
/*==============================================================*/
create table UNIDAD_DE_MEDIDA (
   IDUNIDADDEMEDIDA     numeric              identity,
   NOMBREUNIDADDEMEDIDA varchar(40)          not null,
   constraint PK_UNIDAD_DE_MEDIDA primary key nonclustered (IDUNIDADDEMEDIDA)
)
go

/*==============================================================*/
/* Table: USUARIO                                               */
/*==============================================================*/
create table USUARIO (
   IDUSUARIO            numeric              identity,
   IDESTADOUSUARIO      numeric              not null,
   IDROL                numeric              not null,
   NOMBREUSUARIO        varchar(30)          not null,
   PASSWORDUSUARIO      varchar(20)          not null,
   NOMBREREALUSUARIO    varchar(40)          not null,
   APELLIDOPATERNOUSUARIO varchar(40)          not null,
   APELLIDOMATERNOUSUARIO varchar(40)          not null,
   TELEFONOCONTACTOUSUARIO varchar(40)          not null,
   CORREOCONTACTOUSUARIO varchar(40)          not null,
   constraint PK_USUARIO primary key nonclustered (IDUSUARIO)
)
go

/*==============================================================*/
/* Index: TIENE_UN_FK                                           */
/*==============================================================*/
create index TIENE_UN_FK on USUARIO (
IDROL ASC
)
go

/*==============================================================*/
/* Index: POSEE_UN_FK                                           */
/*==============================================================*/
create index POSEE_UN_FK on USUARIO (
IDESTADOUSUARIO ASC
)
go

alter table BODEGA
   add constraint FK_BODEGA_TIENE_TIPO_BOD foreign key (IDTIPOBODEGA)
      references TIPO_BODEGA (IDTIPOBODEGA)
go

alter table MATERIAL_REAL
   add constraint FK_MATERIAL_ASIGNADO__PROYECTO foreign key (IDPROYECTO)
      references PROYECTO (IDPROYECTO)
go

alter table MATERIAL_REAL
   add constraint FK_MATERIAL_CONTIENE_BODEGA foreign key (IDBODEGA)
      references BODEGA (IDBODEGA)
go

alter table MATERIAL_REAL
   add constraint FK_MATERIAL_EXISTE_TIPO_MAT foreign key (IDTIPOMATERIAL)
      references TIPO_MATERIAL (IDTIPOMATERIAL)
go

alter table PROYECTO
   add constraint FK_PROYECTO_CREA_UN_USUARIO foreign key (IDUSUARIO)
      references USUARIO (IDUSUARIO)
go

alter table PROYECTO
   add constraint FK_PROYECTO_PERTENECE_TIPO_PRO foreign key (IDTIPOPROYECTO)
      references TIPO_PROYECTO (IDTIPOPROYECTO)
go

alter table PROYECTO
   add constraint FK_PROYECTO_RELATIONS_ESTADO_P foreign key (IDESTADOPROYECTO)
      references ESTADO_PROYECTO (IDESTADOPROYECTO)
go

alter table ROL_ACCION
   add constraint FK_ROL_ACCI_AUTORIZAD_ACCION foreign key (IDACCION)
      references ACCION (IDACCION)
go

alter table ROL_ACCION
   add constraint FK_ROL_ACCI_TIENE_AUT_ROL foreign key (IDROL)
      references ROL (IDROL)
go

alter table TIPO_MATERIAL
   add constraint FK_TIPO_MAT_PERTENECE_GRUPO_MA foreign key (IDGRUPOMATERIAL)
      references GRUPO_MATERIAL (IDGRUPOMATERIAL)
go

alter table TIPO_MATERIAL
   add constraint FK_TIPO_MAT_TIENE_UNA_UNIDAD_D foreign key (IDUNIDADDEMEDIDA)
      references UNIDAD_DE_MEDIDA (IDUNIDADDEMEDIDA)
go

alter table USUARIO
   add constraint FK_USUARIO_POSEE_UN_ESTADO_U foreign key (IDESTADOUSUARIO)
      references ESTADO_USUARIO (IDESTADOUSUARIO)
go

alter table USUARIO
   add constraint FK_USUARIO_TIENE_UN_ROL foreign key (IDROL)
      references ROL (IDROL)
go

